/**
 * Store details of club memberships.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

import java.util.ArrayList;
import java.util.Iterator;

public class Club
{
    // Define any necessary fields here ...
    private ArrayList<Membership> members;
    
    /**
     * Constructor for objects of class Club
     */
    public Club()
    {
        this.members = new ArrayList<Membership>();
    }

    /**
     * Add a new member to the club's list of members.
     * @param member The member object to be added.
     */
    public void join(Membership member)
    {
        members.add(member);
    }

    /**
     * @return The number of members (Membership objects) in
     *         the club.
     */
    public int numberOfMembers()
    {
        return this.members.size();
    }
    
    /**
     * Bereken het aantal leden dat lid is geworden in de betreffende maand.
     * @param month De maand waarover we informatie willen.
     * @return Het aantal leden dat lid geworden is.
     */
    public int joinedInMonth(int month){
        int joined = 0;
        if (month < 1 || month > 12){
            System.out.println("Het nummer '" + month + "' is geen geldige invoer. Gelieve te kiezen tussen 1 en 12.");
        } else {
            for(Membership member : members){
                if (member.getMonth() == month) {
                    joined++;
                }
            }
        }
        return joined;
    }
    
    /**
     * Verwijder alle leden uit de collectie van de club die
     * in de betreffende maand zijn ingeschreven en retouneer
     * deze in een afzonderlijke collectieobject.
     * @param month De maand van inschrijving.
     * @param year Het jaar van inschrijving.
     * @return De leden die in de betreffende maand en jaar lid zijn geworden.
     */
    public ArrayList<Membership> purge(int month, int year){
        if(month < 1 || month > 12){
            System.out.println("De ingevoerde maand is ongeldig. (1 t/m 12)");
            return null;
        }
        ArrayList<Membership> membersRemoved = new ArrayList<Membership>();
        Iterator<Membership> it = members.iterator();
        while(it.hasNext()){
            Membership currentMember = it.next();
            if(currentMember.getMonth() == month && currentMember.getYear() == year){
                it.remove();
                membersRemoved.add(currentMember);
            }
        }
        if(membersRemoved.size() > 0)
            return membersRemoved;
        return null;
    }
}

